package cbm.admin.controller;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;

import cbm.commons.BaseController;
import cbm.commons.ConstantsWeb;
import cbm.commons.RequestHelper;
import cbm.commons.UtilitarioFunciones;
import ejb.cbm.admin.bean.LoteArchivoBean;
import ejb.cbm.admin.entity.LoteArchivoEntity;
import ejb.cbm.admin.local.ArchivoFacadeLocal;
import ejb.com.bbva.cbm.util.CacheDatos;
import ejb.com.bbva.cbm.util.Constante;

public class ConsultaCargaArchivoController extends BaseController{
	
	public ArchivoFacadeLocal archivoFacadeLocal;
	
	@Autowired
	public void setArchivoFacadeLocal(ArchivoFacadeLocal archivoFacadeLocal) {
		this.archivoFacadeLocal = archivoFacadeLocal;
	}
	
	public ModelAndView open(HttpServletRequest request, HttpServletResponse response){
		String paginaSig = resources.getString("consultar_cargas");
		
		request.setAttribute("txtFechaActual", UtilitarioFunciones.formatearFecha(new Date(), "dd/MM/yyyy"));
		
		return new ModelAndView(paginaSig);
	}
	
	public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) {
		String paginaSig = resources.getString("ajaxrequest");
		List<LoteArchivoEntity> listResultado = null;
		LoteArchivoBean filtro = null;
		StringBuffer sb = new StringBuffer();
		
		try {
			filtro = this.getFormularioAsBean(request);
			listResultado = archivoFacadeLocal.buscarLotesGenerados(filtro);
			sb.append("<table class='tblListado' style='width: 100%'>" +
					"<thead>" +
					"<tr>" +
					"	<th rowspan='2' style='display: none'>Codigo Lote</th>" +
					"	<th rowspan='2'>Nombre del Archivo</th>" +
					"	<th colspan='2'>Fechas de Carga</th>" +
					"	<th rowspan='2'>Duraci&oacute;n<br>(Minutos)</th>" +
					"	<th colspan='2'>Cantidad Registros</th>" +
					"	<th rowspan='2'>Estado</th>" +
					"</tr>" +					
					"<tr>" +
					"	<th>Inicio</th>" +
					"	<th>Fin</th>" +
					"	<th>Correctos</th>" +
					"	<th>Errados</th>" +
					"</tr>" +
					"</thead>" +
					"<tbody id='tbdArchivo'>");


			if(listResultado.size() == 0) {
				sb.append("<tr><td colspan='8'>"+ConstantsWeb.MENSAJE_NINGUN_REG_ENC+"</td></tr>");
			} else {
				CacheDatos cache = CacheDatos.getInstance();
				
				for (LoteArchivoEntity lote : listResultado) {
					sb.append("<tr>");
					sb.append("<td class='td0200'>"+lote.getIdlote()+"</td>");
					sb.append("<td class='td0201'>"+lote.getNombrearchivo()+"</td>");
					sb.append("<td class='td0202'>"+UtilitarioFunciones.formatearFechaHMS(lote.getFechainicio())+"</td>");
					sb.append("<td class='td0203'>"+UtilitarioFunciones.formatearFechaHMS(lote.getFechafin())+"</td>");
					sb.append("<td class='td0204'>"+UtilitarioFunciones.fechasDiferenciaEnMinutos(lote.getFechainicio(), lote.getFechafin())+"</td>");
					sb.append("<td class='td0205'>"+lote.getCantidadcorrectos()+"</td>");
					sb.append("<td class='td0206'>"+lote.getCantidaderrados()+"</td>");
					sb.append("<td class='td0207'>"+cache.getValorParametro(Constante.TIPO_ESTADO_CARGA_ARCHIVO_CU, "valoralfanumerico", ""+lote.getEstado(), "descripcion")+"</td>");
					sb.append("</tr>");
				}
			}
			sb.append("</tbody></table>");
		} catch(Exception e) {
			e.printStackTrace();logger.error(e);
		}

		return new ModelAndView(paginaSig, "responseText", sb.toString());
	}
	
	public ModelAndView notificar(HttpServletRequest request, HttpServletResponse response){
		return null;
	}
	
	public LoteArchivoBean getFormularioAsBean(HttpServletRequest request){
		
		LoteArchivoBean datosFormulario = new LoteArchivoBean();
		
		String nombreArchivo = RequestHelper.getParameterString(request, "txtNombreArchivo");
		Date fechaInicio     = RequestHelper.getParameterDate(request, "txtFechaIni");
		Date fechaFin        = RequestHelper.getParameterDate(request, "txtFechaFin");
		

		datosFormulario.setNombrearchivo(nombreArchivo);
		datosFormulario.setFechainicio(fechaInicio);
		datosFormulario.setFechafin(fechaFin);
		datosFormulario.setEstado(RequestHelper.getParameterLong(request, "selEstado"));
		
		return datosFormulario;
	}
}